package it.orma.iridehr.service;


import it.orma.iridehr.repository.CandidatoRepository;
import it.orma.iridehr.repository.NewsRepository;
import it.orma.iridehr.repository.RicercaRepository;
import it.orma.iridehr.repository.opportunita.OpportunitaRepository;
import it.orma.iridehr.repository.ricercaOpportunita.RicercaOpportunitaRepository;
import it.orma.iridehr.controllers.ricerca.NewsForm;
import it.orma.iridehr.entities.DatiGenerali;
import it.orma.iridehr.entities.News;
import it.orma.iridehr.entities.Opportunita;
import it.orma.iridehr.entities.SchedaCandidato;
import it.orma.iridehr.entities.Users;

import org.springframework.beans.factory.annotation.Autowired;

public class NewsService {
	
	@Autowired
	private NewsRepository newsRepository;
	
	@Autowired
	private RicercaRepository ricercaRepository;
	
	@Autowired
	private RicercaOpportunitaRepository ricercaOpportunitaRepository;
	
	public void countNews(NewsForm newsForm){
		newsForm.setNewsTot(newsRepository.countNews());
	}
	
	public void caricaNews(NewsForm newsForm){
		newsForm.setSearched(true);
		newsForm.setNews(newsRepository.caricaNews(1));
		
	}
	
	public void refreshNews(NewsForm newsForm){
		newsForm.setNews(newsRepository.caricaNews(newsForm.getPagina()));	
	}
	
	public Boolean nascondiNews(Long idNews){
		newsRepository.nascondiNews(idNews);	
		return true;
	}
	
	public String caricaTemplateEmail(Long idCandidato,Long idNews,String tipoTemplate){
		String template = newsRepository.caricaTemplate(tipoTemplate);
		SchedaCandidato sc = new SchedaCandidato();
		sc.setIdSchedaCandidato(idCandidato);
		Users user = ricercaRepository.caricaCredenziali(sc);
		DatiGenerali dg = ricercaRepository.caricaDatiGenerali(sc);
		if (tipoTemplate.equals("conOpp")){
			News news=newsRepository.caricaNews(idNews);
			Opportunita opp = ricercaOpportunitaRepository.caricaOpportunita(news.getOpportunita().getIdOpportunita());
			template = template.replaceAll("<CODICE_OPP/>", opp.getCodice()+"/"+opp.getProgressivo());
			template = template.replaceAll("<DESCRIZIONE_OPP/>", opp.getDescrizione());
		}
		template = template.replaceAll("<DENOMINAZIONE/>", dg.getNome()+" "+dg.getCognome());
		template = template.replaceAll("<PASSWORD/>", user.getPassword());
		template = template.replaceAll("<USERNAME/>", user.getUserName());
		
		return template;
	}
	
    public String getBannerHtml(int maxIndiciShow, int indicePag,int recordTotali,NewsForm newsForm, int recordXpagina){
    	
    	String html="";
    	if(indicePag < 1)
    		indicePag = 1;
    	//si pagina solo se i dati superano la dimensione di una pagina
    	if(recordTotali > recordXpagina){		
    		//Costruzione menu di paginazione
    		int mostratiDa = (indicePag-1)*recordXpagina+1;
    		html="<table width='100%'><tr><td><span class='pagebanner'>"+recordTotali+" records trovati, mostrati da "+
    			mostratiDa+" a "+(mostratiDa+newsForm.getNews().size()-1);
    		html+=".</span><span class='pagelinks'>";
    		int pagineRapp=recordTotali/recordXpagina;
    		if(recordTotali%recordXpagina>0)
    			pagineRapp++;
    		if(indicePag==1)
    				html+="[Primo/Prec.] ";
    		else{
    			html+="[<a href=\"javascript:cambiaPagDati(1)\">Primo</a>";
    			html+="/<a href=\"javascript:cambiaPagDati("+(indicePag-1)+ ")\">Prec.</a>]";
    		}
    		int start = 1;
    		int end = pagineRapp;     		
    		if(pagineRapp>maxIndiciShow){
	    		if(indicePag - maxIndiciShow/2 < 1 )
	    			end = maxIndiciShow;
	    		else if(indicePag + maxIndiciShow/2 > pagineRapp)
	    			start = pagineRapp - maxIndiciShow;
	    		else{
	    			start = indicePag - maxIndiciShow/2;
	    			end = indicePag + maxIndiciShow/2;	
	    		}    			
    		} 
    		if(start>1)
    			html+="...";
    		for(int i=start;i<end+1;i++){
    			if(i == indicePag)
    				html+="<b> "+i+"</b>,";
    			else{
    				html+=" <a href=\"javascript:cambiaPagDati("+i+")\" title='Vai a pagina "+i+"'>"+i+"</a>,";
    			}
    		}
    		html=html.substring(0,html.length()-1);
    		if(indicePag==pagineRapp)
    				html+=" [Succ./Ultimo] ";
    		else{
    			if (end<pagineRapp){
    				html+=" ...";
        		}
    			html+=" [<a href=\"javascript:cambiaPagDati("+(indicePag+1)+")\">Succ.</a>";
    			html+="/<a href=\"javascript:cambiaPagDati("+pagineRapp+")\">Ultimo</a>]";
    		}	
    		html+="</span></td></tr></table>";
    	}
    	
    	return html;
    }

}
